/*
 * EcmaScriptTokenManager.java - ScriptME
 * 
 * Copyright (c) 2009 Cesar Henriques <cesar at alttab.com.ar>.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Based on FESI Project
 * 
 * Contributors:
 * 	Jean-Marc Lugrin - initial API and implementation
 * 	Cesar Henriques <cesar at alttab.com.ar> - J2ME Porting and Extensions
 */
/*
 * 
 */
/* Generated By:JJTree&JavaCC: Do not edit this line. EcmaScriptTokenManager.java */
package org.scriptme.ecmascript.parser;

/**
 * The Class EcmaScriptTokenManager.
 */
public class EcmaScriptTokenManager implements EcmaScriptConstants {

	/** The debug stream. */
	public java.io.PrintStream debugStream = System.out;

	/**
	 * Sets the debug stream.
	 * 
	 * @param ds
	 *            the new debug stream
	 */
	public void setDebugStream(java.io.PrintStream ds) {
		debugStream = ds;
	}

	/**
	 * Jj stop string literal dfa_0.
	 * 
	 * @param pos
	 *            the pos
	 * @param active0
	 *            the active0
	 * @param active1
	 *            the active1
	 * 
	 * @return the int
	 */
	private final int jjStopStringLiteralDfa_0(int pos, long active0,
			long active1) {
		switch (pos) {
		case 0:
			if ((active0 & 0x8L) != 0L)
				return 0;
			if ((active1 & 0x2L) != 0L)
				return 4;
			if ((active0 & 0x3ffffffff800L) != 0L) {
				jjmatchedKind = 54;
				return 9;
			}
			return -1;
		case 1:
			if ((active0 & 0x3ffdfff9f800L) != 0L) {
				if (jjmatchedPos != 1) {
					jjmatchedKind = 54;
					jjmatchedPos = 1;
				}
				return 9;
			}
			if ((active0 & 0x200060000L) != 0L)
				return 9;
			return -1;
		case 2:
			if ((active0 & 0x40000888000L) != 0L)
				return 9;
			if ((active0 & 0x3bfdff717800L) != 0L) {
				if (jjmatchedPos != 2) {
					jjmatchedKind = 54;
					jjmatchedPos = 2;
				}
				return 9;
			}
			return -1;
		case 3:
			if ((active0 & 0x13f9f2513800L) != 0L) {
				jjmatchedKind = 54;
				jjmatchedPos = 3;
				return 9;
			}
			if ((active0 & 0x28040d204000L) != 0L)
				return 9;
			return -1;
		case 4:
			if ((active0 & 0x17980513000L) != 0L) {
				jjmatchedKind = 54;
				jjmatchedPos = 4;
				return 9;
			}
			if ((active0 & 0x128072000800L) != 0L)
				return 9;
			return -1;
		case 5:
			if ((active0 & 0x3180011000L) != 0L) {
				jjmatchedKind = 54;
				jjmatchedPos = 5;
				return 9;
			}
			if ((active0 & 0x14800502000L) != 0L)
				return 9;
			return -1;
		case 6:
			if ((active0 & 0x80011000L) != 0L) {
				jjmatchedKind = 54;
				jjmatchedPos = 6;
				return 9;
			}
			if ((active0 & 0x3100000000L) != 0L)
				return 9;
			return -1;
		default:
			return -1;
		}
	}

	/**
	 * Jj start nfa_0.
	 * 
	 * @param pos
	 *            the pos
	 * @param active0
	 *            the active0
	 * @param active1
	 *            the active1
	 * 
	 * @return the int
	 */
	private final int jjStartNfa_0(int pos, long active0, long active1) {
		return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1),
				pos + 1);
	}

	/**
	 * Jj stop at pos.
	 * 
	 * @param pos
	 *            the pos
	 * @param kind
	 *            the kind
	 * 
	 * @return the int
	 */
	private final int jjStopAtPos(int pos, int kind) {
		jjmatchedKind = kind;
		jjmatchedPos = pos;
		return pos + 1;
	}

	/**
	 * Jj start nfa with states_0.
	 * 
	 * @param pos
	 *            the pos
	 * @param kind
	 *            the kind
	 * @param state
	 *            the state
	 * 
	 * @return the int
	 */
	private final int jjStartNfaWithStates_0(int pos, int kind, int state) {
		jjmatchedKind = kind;
		jjmatchedPos = pos;
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			return pos + 1;
		}
		return jjMoveNfa_0(state, pos + 1);
	}

	/**
	 * Jj move string literal dfa0_0.
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa0_0() {
		switch (curChar) {
		case 13:
			return jjStartNfaWithStates_0(0, 3, 0);
		case 33:
			jjmatchedKind = 69;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x1000L);
		case 37:
			jjmatchedKind = 88;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x800000000L);
		case 38:
			jjmatchedKind = 85;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x100004000L);
		case 40:
			return jjStopAtPos(0, 57);
		case 41:
			return jjStopAtPos(0, 58);
		case 42:
			jjmatchedKind = 83;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x40000000L);
		case 43:
			jjmatchedKind = 81;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x10008000L);
		case 44:
			return jjStopAtPos(0, 64);
		case 45:
			jjmatchedKind = 82;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x20010000L);
		case 46:
			return jjStartNfaWithStates_0(0, 65, 4);
		case 47:
			jjmatchedKind = 84;
			return jjMoveStringLiteralDfa1_0(0xc0L, 0x80000000L);
		case 58:
			return jjStopAtPos(0, 72);
		case 59:
			return jjStopAtPos(0, 63);
		case 60:
			jjmatchedKind = 68;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x1002000400L);
		case 61:
			jjmatchedKind = 66;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x200L);
		case 62:
			jjmatchedKind = 67;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x600c000800L);
		case 63:
			return jjStopAtPos(0, 71);
		case 91:
			return jjStopAtPos(0, 61);
		case 93:
			return jjStopAtPos(0, 62);
		case 94:
			jjmatchedKind = 87;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x400000000L);
		case 98:
			return jjMoveStringLiteralDfa1_0(0x800L, 0x0L);
		case 99:
			return jjMoveStringLiteralDfa1_0(0x78001000L, 0x0L);
		case 100:
			return jjMoveStringLiteralDfa1_0(0x380002000L, 0x0L);
		case 101:
			return jjMoveStringLiteralDfa1_0(0x1c00004000L, 0x0L);
		case 102:
			return jjMoveStringLiteralDfa1_0(0x102000018000L, 0x0L);
		case 105:
			return jjMoveStringLiteralDfa1_0(0x4000060000L, 0x0L);
		case 110:
			return jjMoveStringLiteralDfa1_0(0x200000080000L, 0x0L);
		case 114:
			return jjMoveStringLiteralDfa1_0(0x100000L, 0x0L);
		case 115:
			return jjMoveStringLiteralDfa1_0(0x18000000000L, 0x0L);
		case 116:
			return jjMoveStringLiteralDfa1_0(0xe0000600000L, 0x0L);
		case 118:
			return jjMoveStringLiteralDfa1_0(0x1800000L, 0x0L);
		case 119:
			return jjMoveStringLiteralDfa1_0(0x6000000L, 0x0L);
		case 123:
			return jjStopAtPos(0, 59);
		case 124:
			jjmatchedKind = 86;
			return jjMoveStringLiteralDfa1_0(0x0L, 0x200002000L);
		case 125:
			return jjStopAtPos(0, 60);
		case 126:
			return jjStopAtPos(0, 70);
		default:
			return jjMoveNfa_0(1, 0);
		}
	}

	/**
	 * Jj move string literal dfa1_0.
	 * 
	 * @param active0
	 *            the active0
	 * @param active1
	 *            the active1
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa1_0(long active0, long active1) {
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(0, active0, active1);
			return 1;
		}
		switch (curChar) {
		case 38:
			if ((active1 & 0x4000L) != 0L)
				return jjStopAtPos(1, 78);
			break;
		case 42:
			if ((active0 & 0x80L) != 0L)
				return jjStopAtPos(1, 7);
			break;
		case 43:
			if ((active1 & 0x8000L) != 0L)
				return jjStopAtPos(1, 79);
			break;
		case 45:
			if ((active1 & 0x10000L) != 0L)
				return jjStopAtPos(1, 80);
			break;
		case 47:
			if ((active0 & 0x40L) != 0L)
				return jjStopAtPos(1, 6);
			break;
		case 60:
			if ((active1 & 0x2000000L) != 0L) {
				jjmatchedKind = 89;
				jjmatchedPos = 1;
			}
			return jjMoveStringLiteralDfa2_0(active0, 0L, active1,
					0x1000000000L);
		case 61:
			if ((active1 & 0x200L) != 0L)
				return jjStopAtPos(1, 73);
			else if ((active1 & 0x400L) != 0L)
				return jjStopAtPos(1, 74);
			else if ((active1 & 0x800L) != 0L)
				return jjStopAtPos(1, 75);
			else if ((active1 & 0x1000L) != 0L)
				return jjStopAtPos(1, 76);
			else if ((active1 & 0x10000000L) != 0L)
				return jjStopAtPos(1, 92);
			else if ((active1 & 0x20000000L) != 0L)
				return jjStopAtPos(1, 93);
			else if ((active1 & 0x40000000L) != 0L)
				return jjStopAtPos(1, 94);
			else if ((active1 & 0x80000000L) != 0L)
				return jjStopAtPos(1, 95);
			else if ((active1 & 0x100000000L) != 0L)
				return jjStopAtPos(1, 96);
			else if ((active1 & 0x200000000L) != 0L)
				return jjStopAtPos(1, 97);
			else if ((active1 & 0x400000000L) != 0L)
				return jjStopAtPos(1, 98);
			else if ((active1 & 0x800000000L) != 0L)
				return jjStopAtPos(1, 99);
			break;
		case 62:
			if ((active1 & 0x4000000L) != 0L) {
				jjmatchedKind = 90;
				jjmatchedPos = 1;
			}
			return jjMoveStringLiteralDfa2_0(active0, 0L, active1,
					0x6008000000L);
		case 97:
			return jjMoveStringLiteralDfa2_0(active0, 0x100018800000L, active1,
					0L);
		case 101:
			return jjMoveStringLiteralDfa2_0(active0, 0x180182000L, active1, 0L);
		case 102:
			if ((active0 & 0x20000L) != 0L)
				return jjStartNfaWithStates_0(1, 17, 9);
			break;
		case 104:
			return jjMoveStringLiteralDfa2_0(active0, 0x20002200000L, active1,
					0L);
		case 105:
			return jjMoveStringLiteralDfa2_0(active0, 0x2004000000L, active1,
					0L);
		case 108:
			return jjMoveStringLiteralDfa2_0(active0, 0x20004000L, active1, 0L);
		case 109:
			return jjMoveStringLiteralDfa2_0(active0, 0x4000000000L, active1,
					0L);
		case 110:
			if ((active0 & 0x40000L) != 0L)
				return jjStartNfaWithStates_0(1, 18, 9);
			return jjMoveStringLiteralDfa2_0(active0, 0x400000000L, active1, 0L);
		case 111:
			if ((active0 & 0x200000000L) != 0L)
				return jjStartNfaWithStates_0(1, 33, 9);
			return jjMoveStringLiteralDfa2_0(active0, 0x41009000L, active1, 0L);
		case 114:
			return jjMoveStringLiteralDfa2_0(active0, 0xc0000000800L, active1,
					0L);
		case 117:
			return jjMoveStringLiteralDfa2_0(active0, 0x208000010000L, active1,
					0L);
		case 119:
			return jjMoveStringLiteralDfa2_0(active0, 0x10000000000L, active1,
					0L);
		case 120:
			return jjMoveStringLiteralDfa2_0(active0, 0x1800000000L, active1,
					0L);
		case 121:
			return jjMoveStringLiteralDfa2_0(active0, 0x400000L, active1, 0L);
		case 124:
			if ((active1 & 0x2000L) != 0L)
				return jjStopAtPos(1, 77);
			break;
		default:
			break;
		}
		return jjStartNfa_0(0, active0, active1);
	}

	/**
	 * Jj move string literal dfa2_0.
	 * 
	 * @param old0
	 *            the old0
	 * @param active0
	 *            the active0
	 * @param old1
	 *            the old1
	 * @param active1
	 *            the active1
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa2_0(long old0, long active0,
			long old1, long active1) {
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(0, old0, old1);
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(1, active0, active1);
			return 2;
		}
		switch (curChar) {
		case 61:
			if ((active1 & 0x1000000000L) != 0L)
				return jjStopAtPos(2, 100);
			else if ((active1 & 0x2000000000L) != 0L)
				return jjStopAtPos(2, 101);
			break;
		case 62:
			if ((active1 & 0x8000000L) != 0L) {
				jjmatchedKind = 91;
				jjmatchedPos = 2;
			}
			return jjMoveStringLiteralDfa3_0(active0, 0L, active1,
					0x4000000000L);
		case 97:
			return jjMoveStringLiteralDfa3_0(active0, 0x20000000L, active1, 0L);
		case 98:
			return jjMoveStringLiteralDfa3_0(active0, 0x80000000L, active1, 0L);
		case 101:
			return jjMoveStringLiteralDfa3_0(active0, 0x800L, active1, 0L);
		case 102:
			return jjMoveStringLiteralDfa3_0(active0, 0x100000000L, active1, 0L);
		case 105:
			return jjMoveStringLiteralDfa3_0(active0, 0x10003200000L, active1,
					0L);
		case 108:
			return jjMoveStringLiteralDfa3_0(active0, 0x300000002000L, active1,
					0L);
		case 110:
			return jjMoveStringLiteralDfa3_0(active0, 0x2040011000L, active1,
					0L);
		case 112:
			return jjMoveStringLiteralDfa3_0(active0, 0xc800400000L, active1,
					0L);
		case 114:
			if ((active0 & 0x8000L) != 0L)
				return jjStartNfaWithStates_0(2, 15, 9);
			else if ((active0 & 0x800000L) != 0L)
				return jjStartNfaWithStates_0(2, 23, 9);
			return jjMoveStringLiteralDfa3_0(active0, 0x20000000000L, active1,
					0L);
		case 115:
			return jjMoveStringLiteralDfa3_0(active0, 0x8004000L, active1, 0L);
		case 116:
			return jjMoveStringLiteralDfa3_0(active0, 0x1014100000L, active1,
					0L);
		case 117:
			return jjMoveStringLiteralDfa3_0(active0, 0x80400000000L, active1,
					0L);
		case 119:
			if ((active0 & 0x80000L) != 0L)
				return jjStartNfaWithStates_0(2, 19, 9);
			break;
		case 121:
			if ((active0 & 0x40000000000L) != 0L)
				return jjStartNfaWithStates_0(2, 42, 9);
			break;
		default:
			break;
		}
		return jjStartNfa_0(1, active0, active1);
	}

	/**
	 * Jj move string literal dfa3_0.
	 * 
	 * @param old0
	 *            the old0
	 * @param active0
	 *            the active0
	 * @param old1
	 *            the old1
	 * @param active1
	 *            the active1
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa3_0(long old0, long active0,
			long old1, long active1) {
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(1, old0, old1);
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(2, active0, active1);
			return 3;
		}
		switch (curChar) {
		case 61:
			if ((active1 & 0x4000000000L) != 0L)
				return jjStopAtPos(3, 102);
			break;
		case 97:
			return jjMoveStringLiteralDfa4_0(active0, 0x2100000800L, active1,
					0L);
		case 99:
			return jjMoveStringLiteralDfa4_0(active0, 0x10010000L, active1, 0L);
		case 100:
			if ((active0 & 0x1000000L) != 0L)
				return jjStartNfaWithStates_0(3, 24, 9);
			break;
		case 101:
			if ((active0 & 0x4000L) != 0L)
				return jjStartNfaWithStates_0(3, 14, 9);
			else if ((active0 & 0x8000000L) != 0L)
				return jjStartNfaWithStates_0(3, 27, 9);
			else if ((active0 & 0x80000000000L) != 0L)
				return jjStartNfaWithStates_0(3, 43, 9);
			return jjMoveStringLiteralDfa4_0(active0, 0x9000402000L, active1,
					0L);
		case 104:
			if ((active0 & 0x4000000L) != 0L)
				return jjStartNfaWithStates_0(3, 26, 9);
			break;
		case 108:
			if ((active0 & 0x200000000000L) != 0L)
				return jjStartNfaWithStates_0(3, 45, 9);
			return jjMoveStringLiteralDfa4_0(active0, 0x2000000L, active1, 0L);
		case 109:
			if ((active0 & 0x400000000L) != 0L)
				return jjStartNfaWithStates_0(3, 34, 9);
			break;
		case 111:
			return jjMoveStringLiteralDfa4_0(active0, 0x24800000000L, active1,
					0L);
		case 115:
			if ((active0 & 0x200000L) != 0L)
				return jjStartNfaWithStates_0(3, 21, 9);
			return jjMoveStringLiteralDfa4_0(active0, 0x100060000000L, active1,
					0L);
		case 116:
			return jjMoveStringLiteralDfa4_0(active0, 0x10000001000L, active1,
					0L);
		case 117:
			return jjMoveStringLiteralDfa4_0(active0, 0x80100000L, active1, 0L);
		default:
			break;
		}
		return jjStartNfa_0(2, active0, active1);
	}

	/**
	 * Jj move string literal dfa4_0.
	 * 
	 * @param old0
	 *            the old0
	 * @param active0
	 *            the active0
	 * @param old1
	 *            the old1
	 * @param active1
	 *            the active1
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa4_0(long old0, long active0,
			long old1, long active1) {
		if (((active0 &= old0) | (active1 &= old1)) == 0L)
			return jjStartNfa_0(2, old0, old1);
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(3, active0, 0L);
			return 4;
		}
		switch (curChar) {
		case 99:
			return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L);
		case 101:
			if ((active0 & 0x2000000L) != 0L)
				return jjStartNfaWithStates_0(4, 25, 9);
			else if ((active0 & 0x100000000000L) != 0L)
				return jjStartNfaWithStates_0(4, 44, 9);
			break;
		case 103:
			return jjMoveStringLiteralDfa5_0(active0, 0x80000000L);
		case 104:
			if ((active0 & 0x10000000L) != 0L)
				return jjStartNfaWithStates_0(4, 28, 9);
			break;
		case 105:
			return jjMoveStringLiteralDfa5_0(active0, 0x1000L);
		case 107:
			if ((active0 & 0x800L) != 0L)
				return jjStartNfaWithStates_0(4, 11, 9);
			break;
		case 108:
			return jjMoveStringLiteralDfa5_0(active0, 0x2000000000L);
		case 110:
			return jjMoveStringLiteralDfa5_0(active0, 0x1000000000L);
		case 111:
			return jjMoveStringLiteralDfa5_0(active0, 0x400000L);
		case 114:
			if ((active0 & 0x8000000000L) != 0L)
				return jjStartNfaWithStates_0(4, 39, 9);
			return jjMoveStringLiteralDfa5_0(active0, 0x4800100000L);
		case 115:
			if ((active0 & 0x20000000L) != 0L)
				return jjStartNfaWithStates_0(4, 29, 9);
			break;
		case 116:
			if ((active0 & 0x40000000L) != 0L)
				return jjStartNfaWithStates_0(4, 30, 9);
			return jjMoveStringLiteralDfa5_0(active0, 0x12000L);
		case 117:
			return jjMoveStringLiteralDfa5_0(active0, 0x100000000L);
		case 119:
			if ((active0 & 0x20000000000L) != 0L)
				return jjStartNfaWithStates_0(4, 41, 9);
			break;
		default:
			break;
		}
		return jjStartNfa_0(3, active0, 0L);
	}

	/**
	 * Jj move string literal dfa5_0.
	 * 
	 * @param old0
	 *            the old0
	 * @param active0
	 *            the active0
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa5_0(long old0, long active0) {
		if (((active0 &= old0)) == 0L)
			return jjStartNfa_0(3, old0, 0L);
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(4, active0, 0L);
			return 5;
		}
		switch (curChar) {
		case 100:
			return jjMoveStringLiteralDfa6_0(active0, 0x1000000000L);
		case 101:
			if ((active0 & 0x2000L) != 0L)
				return jjStartNfaWithStates_0(5, 13, 9);
			break;
		case 102:
			if ((active0 & 0x400000L) != 0L)
				return jjStartNfaWithStates_0(5, 22, 9);
			break;
		case 103:
			return jjMoveStringLiteralDfa6_0(active0, 0x80000000L);
		case 104:
			if ((active0 & 0x10000000000L) != 0L)
				return jjStartNfaWithStates_0(5, 40, 9);
			break;
		case 105:
			return jjMoveStringLiteralDfa6_0(active0, 0x10000L);
		case 108:
			return jjMoveStringLiteralDfa6_0(active0, 0x2100000000L);
		case 110:
			if ((active0 & 0x100000L) != 0L)
				return jjStartNfaWithStates_0(5, 20, 9);
			return jjMoveStringLiteralDfa6_0(active0, 0x1000L);
		case 116:
			if ((active0 & 0x800000000L) != 0L)
				return jjStartNfaWithStates_0(5, 35, 9);
			else if ((active0 & 0x4000000000L) != 0L)
				return jjStartNfaWithStates_0(5, 38, 9);
			break;
		default:
			break;
		}
		return jjStartNfa_0(4, active0, 0L);
	}

	/**
	 * Jj move string literal dfa6_0.
	 * 
	 * @param old0
	 *            the old0
	 * @param active0
	 *            the active0
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa6_0(long old0, long active0) {
		if (((active0 &= old0)) == 0L)
			return jjStartNfa_0(4, old0, 0L);
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(5, active0, 0L);
			return 6;
		}
		switch (curChar) {
		case 101:
			return jjMoveStringLiteralDfa7_0(active0, 0x80000000L);
		case 111:
			return jjMoveStringLiteralDfa7_0(active0, 0x10000L);
		case 115:
			if ((active0 & 0x1000000000L) != 0L)
				return jjStartNfaWithStates_0(6, 36, 9);
			break;
		case 116:
			if ((active0 & 0x100000000L) != 0L)
				return jjStartNfaWithStates_0(6, 32, 9);
			break;
		case 117:
			return jjMoveStringLiteralDfa7_0(active0, 0x1000L);
		case 121:
			if ((active0 & 0x2000000000L) != 0L)
				return jjStartNfaWithStates_0(6, 37, 9);
			break;
		default:
			break;
		}
		return jjStartNfa_0(5, active0, 0L);
	}

	/**
	 * Jj move string literal dfa7_0.
	 * 
	 * @param old0
	 *            the old0
	 * @param active0
	 *            the active0
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa7_0(long old0, long active0) {
		if (((active0 &= old0)) == 0L)
			return jjStartNfa_0(5, old0, 0L);
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			jjStopStringLiteralDfa_0(6, active0, 0L);
			return 7;
		}
		switch (curChar) {
		case 101:
			if ((active0 & 0x1000L) != 0L)
				return jjStartNfaWithStates_0(7, 12, 9);
			break;
		case 110:
			if ((active0 & 0x10000L) != 0L)
				return jjStartNfaWithStates_0(7, 16, 9);
			break;
		case 114:
			if ((active0 & 0x80000000L) != 0L)
				return jjStartNfaWithStates_0(7, 31, 9);
			break;
		default:
			break;
		}
		return jjStartNfa_0(6, active0, 0L);
	}

	/**
	 * Jj check n add.
	 * 
	 * @param state
	 *            the state
	 */
	private final void jjCheckNAdd(int state) {
		if (jjrounds[state] != jjround) {
			jjstateSet[jjnewStateCnt++] = state;
			jjrounds[state] = jjround;
		}
	}

	/**
	 * Jj add states.
	 * 
	 * @param start
	 *            the start
	 * @param end
	 *            the end
	 */
	private final void jjAddStates(int start, int end) {
		do {
			jjstateSet[jjnewStateCnt++] = jjnextStates[start];
		} while (start++ != end);
	}

	/**
	 * Jj check n add two states.
	 * 
	 * @param state1
	 *            the state1
	 * @param state2
	 *            the state2
	 */
	private final void jjCheckNAddTwoStates(int state1, int state2) {
		jjCheckNAdd(state1);
		jjCheckNAdd(state2);
	}

	/**
	 * Jj check n add states.
	 * 
	 * @param start
	 *            the start
	 * @param end
	 *            the end
	 */
	private final void jjCheckNAddStates(int start, int end) {
		do {
			jjCheckNAdd(jjnextStates[start]);
		} while (start++ != end);
	}

	/**
	 * Jj check n add states.
	 * 
	 * @param start
	 *            the start
	 */
	private final void jjCheckNAddStates(int start) {
		jjCheckNAdd(jjnextStates[start]);
		jjCheckNAdd(jjnextStates[start + 1]);
	}

	/** The Constant jjbitVec0. */
	static final long[] jjbitVec0 = { 0x0L, 0x0L, 0xffffffffffffffffL,
			0xffffffffffffffffL };

	/**
	 * Jj move nfa_0.
	 * 
	 * @param startState
	 *            the start state
	 * @param curPos
	 *            the cur pos
	 * 
	 * @return the int
	 */
	private final int jjMoveNfa_0(int startState, int curPos) {
		int[] nextStates;
		int startsAt = 0;
		jjnewStateCnt = 86;
		int i = 1;
		jjstateSet[0] = startState;
		int j, kind = 0x7fffffff;
		for (;;) {
			if (++jjround == 0x7fffffff)
				ReInitRounds();
			if (curChar < 64) {
				long l = 1L << curChar;
				MatchLoop: do {
					switch (jjstateSet[--i]) {
					case 1:
						if ((0x3ff000000000000L & l) != 0L) {
							if (kind > 49)
								kind = 49;
							jjCheckNAddStates(0, 3);
						} else if ((0x2400L & l) != 0L) {
							if (kind > 5)
								kind = 5;
							jjCheckNAdd(0);
						} else if (curChar == 39) {
							if (kind > 53)
								kind = 53;
							jjCheckNAddStates(4, 9);
						} else if (curChar == 34) {
							if (kind > 53)
								kind = 53;
							jjCheckNAddStates(10, 15);
						} else if (curChar == 36) {
							if (kind > 54)
								kind = 54;
							jjCheckNAdd(9);
						} else if (curChar == 46)
							jjCheckNAdd(4);
						if ((0x3fe000000000000L & l) != 0L) {
							if (kind > 46)
								kind = 46;
							jjCheckNAdd(2);
						} else if (curChar == 48) {
							if (kind > 48)
								kind = 48;
							jjCheckNAddTwoStates(22, 24);
						}
						break;
					case 0:
						if ((0x2400L & l) == 0L)
							break;
						if (kind > 5)
							kind = 5;
						jjCheckNAdd(0);
						break;
					case 2:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 46)
							kind = 46;
						jjCheckNAdd(2);
						break;
					case 3:
						if (curChar == 46)
							jjCheckNAdd(4);
						break;
					case 4:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAddTwoStates(4, 5);
						break;
					case 6:
						if ((0x280000000000L & l) != 0L)
							jjCheckNAdd(7);
						break;
					case 7:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAdd(7);
						break;
					case 8:
						if (curChar != 36)
							break;
						if (kind > 54)
							kind = 54;
						jjCheckNAdd(9);
						break;
					case 9:
						if ((0x3ff001000000000L & l) == 0L)
							break;
						if (kind > 54)
							kind = 54;
						jjCheckNAdd(9);
						break;
					case 10:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAddStates(0, 3);
						break;
					case 11:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAddTwoStates(11, 12);
						break;
					case 12:
						if (curChar != 46)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAddTwoStates(13, 14);
						break;
					case 13:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAddTwoStates(13, 14);
						break;
					case 15:
						if ((0x280000000000L & l) != 0L)
							jjCheckNAdd(16);
						break;
					case 16:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAdd(16);
						break;
					case 17:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAddTwoStates(17, 18);
						break;
					case 19:
						if ((0x280000000000L & l) != 0L)
							jjCheckNAdd(20);
						break;
					case 20:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 49)
							kind = 49;
						jjCheckNAdd(20);
						break;
					case 21:
						if (curChar != 48)
							break;
						if (kind > 48)
							kind = 48;
						jjCheckNAddTwoStates(22, 24);
						break;
					case 23:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 47)
							kind = 47;
						jjstateSet[jjnewStateCnt++] = 23;
						break;
					case 24:
						if ((0xff000000000000L & l) == 0L)
							break;
						if (kind > 48)
							kind = 48;
						jjCheckNAdd(24);
						break;
					case 25:
						if (curChar != 34)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(10, 15);
						break;
					case 26:
						if ((0xfffffffbffffdbffL & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 28:
						if ((0x8400000000L & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 29:
						if (curChar == 34 && kind > 51)
							kind = 51;
						break;
					case 30:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAddStates(19, 22);
						break;
					case 31:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 32:
						if ((0xf000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 33;
						break;
					case 33:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAdd(31);
						break;
					case 35:
					case 40:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAdd(36);
						break;
					case 36:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 38:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 39;
						break;
					case 39:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 40;
						break;
					case 41:
						if ((0xfffffffbffffdbffL & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 43:
						if ((0x8400000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 44:
						if ((0x2400L & l) != 0L && kind > 53)
							kind = 53;
						break;
					case 45:
						if ((0xff000000000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(26, 29);
						break;
					case 46:
						if ((0xff000000000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 47:
						if ((0xf000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 48;
						break;
					case 48:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAdd(46);
						break;
					case 50:
					case 55:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAdd(51);
						break;
					case 51:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 53:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 54;
						break;
					case 54:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 55;
						break;
					case 56:
						if (curChar != 39)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(4, 9);
						break;
					case 57:
						if ((0xffffff7fffffdbffL & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 59:
						if ((0x8400000000L & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 60:
						if (curChar == 39 && kind > 51)
							kind = 51;
						break;
					case 61:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAddStates(33, 36);
						break;
					case 62:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 63:
						if ((0xf000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 64;
						break;
					case 64:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAdd(62);
						break;
					case 66:
					case 71:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAdd(67);
						break;
					case 67:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 69:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 70;
						break;
					case 70:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 71;
						break;
					case 72:
						if ((0xffffff7fffffdbffL & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 74:
						if ((0x8400000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 75:
						if ((0xff000000000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(40, 43);
						break;
					case 76:
						if ((0xff000000000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 77:
						if ((0xf000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 78;
						break;
					case 78:
						if ((0xff000000000000L & l) != 0L)
							jjCheckNAdd(76);
						break;
					case 80:
					case 85:
						if ((0x3ff000000000000L & l) != 0L)
							jjCheckNAdd(81);
						break;
					case 81:
						if ((0x3ff000000000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 83:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 84;
						break;
					case 84:
						if ((0x3ff000000000000L & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 85;
						break;
					default:
						break;
					}
				} while (i != startsAt);
			} else if (curChar < 128) {
				long l = 1L << (curChar & 077);
				MatchLoop: do {
					switch (jjstateSet[--i]) {
					case 1:
					case 9:
						if ((0x7fffffe87fffffeL & l) == 0L)
							break;
						if (kind > 54)
							kind = 54;
						jjCheckNAdd(9);
						break;
					case 5:
						if ((0x2000000020L & l) != 0L)
							jjAddStates(44, 45);
						break;
					case 14:
						if ((0x2000000020L & l) != 0L)
							jjAddStates(46, 47);
						break;
					case 18:
						if ((0x2000000020L & l) != 0L)
							jjAddStates(48, 49);
						break;
					case 22:
						if ((0x100000001000000L & l) != 0L)
							jjCheckNAdd(23);
						break;
					case 23:
						if ((0x7e0000007eL & l) == 0L)
							break;
						if (kind > 47)
							kind = 47;
						jjCheckNAdd(23);
						break;
					case 26:
						if ((0xffffffffefffffffL & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 27:
						if (curChar == 92)
							jjAddStates(50, 54);
						break;
					case 28:
						if ((0x14404410000000L & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 34:
						if (curChar == 120)
							jjstateSet[jjnewStateCnt++] = 35;
						break;
					case 35:
					case 40:
						if ((0x7e0000007eL & l) != 0L)
							jjCheckNAdd(36);
						break;
					case 36:
						if ((0x7e0000007eL & l) != 0L)
							jjCheckNAddStates(16, 18);
						break;
					case 37:
						if (curChar == 117)
							jjstateSet[jjnewStateCnt++] = 38;
						break;
					case 38:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 39;
						break;
					case 39:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 40;
						break;
					case 41:
						if ((0xffffffffefffffffL & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 42:
						if (curChar == 92)
							jjAddStates(55, 59);
						break;
					case 43:
						if ((0x14404410000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 49:
						if (curChar == 120)
							jjstateSet[jjnewStateCnt++] = 50;
						break;
					case 50:
					case 55:
						if ((0x7e0000007eL & l) != 0L)
							jjCheckNAdd(51);
						break;
					case 51:
						if ((0x7e0000007eL & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 52:
						if (curChar == 117)
							jjstateSet[jjnewStateCnt++] = 53;
						break;
					case 53:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 54;
						break;
					case 54:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 55;
						break;
					case 57:
						if ((0xffffffffefffffffL & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 58:
						if (curChar == 92)
							jjAddStates(60, 64);
						break;
					case 59:
						if ((0x14404410000000L & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 65:
						if (curChar == 120)
							jjstateSet[jjnewStateCnt++] = 66;
						break;
					case 66:
					case 71:
						if ((0x7e0000007eL & l) != 0L)
							jjCheckNAdd(67);
						break;
					case 67:
						if ((0x7e0000007eL & l) != 0L)
							jjCheckNAddStates(30, 32);
						break;
					case 68:
						if (curChar == 117)
							jjstateSet[jjnewStateCnt++] = 69;
						break;
					case 69:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 70;
						break;
					case 70:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 71;
						break;
					case 72:
						if ((0xffffffffefffffffL & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 73:
						if (curChar == 92)
							jjAddStates(65, 69);
						break;
					case 74:
						if ((0x14404410000000L & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 79:
						if (curChar == 120)
							jjstateSet[jjnewStateCnt++] = 80;
						break;
					case 80:
					case 85:
						if ((0x7e0000007eL & l) != 0L)
							jjCheckNAdd(81);
						break;
					case 81:
						if ((0x7e0000007eL & l) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					case 82:
						if (curChar == 117)
							jjstateSet[jjnewStateCnt++] = 83;
						break;
					case 83:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 84;
						break;
					case 84:
						if ((0x7e0000007eL & l) != 0L)
							jjstateSet[jjnewStateCnt++] = 85;
						break;
					default:
						break;
					}
				} while (i != startsAt);
			} else {
				int i2 = (curChar & 0xff) >> 6;
				long l2 = 1L << (curChar & 077);
				MatchLoop: do {
					switch (jjstateSet[--i]) {
					case 26:
						if ((jjbitVec0[i2] & l2) != 0L)
							jjAddStates(16, 18);
						break;
					case 41:
						if ((jjbitVec0[i2] & l2) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(23, 25);
						break;
					case 57:
						if ((jjbitVec0[i2] & l2) != 0L)
							jjAddStates(30, 32);
						break;
					case 72:
						if ((jjbitVec0[i2] & l2) == 0L)
							break;
						if (kind > 53)
							kind = 53;
						jjCheckNAddStates(37, 39);
						break;
					default:
						break;
					}
				} while (i != startsAt);
			}
			if (kind != 0x7fffffff) {
				jjmatchedKind = kind;
				jjmatchedPos = curPos;
				kind = 0x7fffffff;
			}
			++curPos;
			if ((i = jjnewStateCnt) == (startsAt = 86 - (jjnewStateCnt = startsAt)))
				return curPos;
			try {
				curChar = input_stream.readChar();
			} catch (java.io.IOException e) {
				return curPos;
			}
		}
	}

	/**
	 * Jj move string literal dfa0_2.
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa0_2() {
		switch (curChar) {
		case 42:
			return jjMoveStringLiteralDfa1_2(0x200L);
		default:
			return 1;
		}
	}

	/**
	 * Jj move string literal dfa1_2.
	 * 
	 * @param active0
	 *            the active0
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa1_2(long active0) {
		try {
			curChar = input_stream.readChar();
		} catch (java.io.IOException e) {
			return 1;
		}
		switch (curChar) {
		case 47:
			if ((active0 & 0x200L) != 0L)
				return jjStopAtPos(1, 9);
			break;
		default:
			return 2;
		}
		return 2;
	}

	/**
	 * Jj move string literal dfa0_1.
	 * 
	 * @return the int
	 */
	private final int jjMoveStringLiteralDfa0_1() {
		return jjMoveNfa_1(0, 0);
	}

	/**
	 * Jj move nfa_1.
	 * 
	 * @param startState
	 *            the start state
	 * @param curPos
	 *            the cur pos
	 * 
	 * @return the int
	 */
	private final int jjMoveNfa_1(int startState, int curPos) {
		int[] nextStates;
		int startsAt = 0;
		jjnewStateCnt = 3;
		int i = 1;
		jjstateSet[0] = startState;
		int j, kind = 0x7fffffff;
		for (;;) {
			if (++jjround == 0x7fffffff)
				ReInitRounds();
			if (curChar < 64) {
				long l = 1L << curChar;
				MatchLoop: do {
					switch (jjstateSet[--i]) {
					case 0:
						if ((0x2400L & l) != 0L) {
							if (kind > 8)
								kind = 8;
						}
						if (curChar == 13)
							jjstateSet[jjnewStateCnt++] = 1;
						break;
					case 1:
						if (curChar == 10 && kind > 8)
							kind = 8;
						break;
					case 2:
						if (curChar == 13)
							jjstateSet[jjnewStateCnt++] = 1;
						break;
					default:
						break;
					}
				} while (i != startsAt);
			} else if (curChar < 128) {
				long l = 1L << (curChar & 077);
				MatchLoop: do {
					switch (jjstateSet[--i]) {
					default:
						break;
					}
				} while (i != startsAt);
			} else {
				int i2 = (curChar & 0xff) >> 6;
				long l2 = 1L << (curChar & 077);
				MatchLoop: do {
					switch (jjstateSet[--i]) {
					default:
						break;
					}
				} while (i != startsAt);
			}
			if (kind != 0x7fffffff) {
				jjmatchedKind = kind;
				jjmatchedPos = curPos;
				kind = 0x7fffffff;
			}
			++curPos;
			if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
				return curPos;
			try {
				curChar = input_stream.readChar();
			} catch (java.io.IOException e) {
				return curPos;
			}
		}
	}

	/** The Constant jjnextStates. */
	static final int[] jjnextStates = { 11, 12, 17, 18, 57, 58, 60, 72, 73, 44,
			26, 27, 29, 41, 42, 44, 26, 27, 29, 26, 27, 31, 29, 41, 42, 44, 41,
			42, 46, 44, 57, 58, 60, 57, 58, 62, 60, 72, 73, 44, 72, 73, 76, 44,
			6, 7, 15, 16, 19, 20, 28, 30, 32, 34, 37, 43, 45, 47, 49, 52, 59,
			61, 63, 65, 68, 74, 75, 77, 79, 82, };

	/** The Constant jjstrLiteralImages. */
	public static final String[] jjstrLiteralImages = { "", null, null, null,
			null, null, null, null, null, null, null, "\142\162\145\141\153",
			"\143\157\156\164\151\156\165\145", "\144\145\154\145\164\145",
			"\145\154\163\145", "\146\157\162",
			"\146\165\156\143\164\151\157\156", "\151\146", "\151\156",
			"\156\145\167", "\162\145\164\165\162\156", "\164\150\151\163",
			"\164\171\160\145\157\146", "\166\141\162", "\166\157\151\144",
			"\167\150\151\154\145", "\167\151\164\150", "\143\141\163\145",
			"\143\141\164\143\150", "\143\154\141\163\163",
			"\143\157\156\163\164", "\144\145\142\165\147\147\145\162",
			"\144\145\146\141\165\154\164", "\144\157", "\145\156\165\155",
			"\145\170\160\157\162\164", "\145\170\164\145\156\144\163",
			"\146\151\156\141\154\154\171", "\151\155\160\157\162\164",
			"\163\165\160\145\162", "\163\167\151\164\143\150",
			"\164\150\162\157\167", "\164\162\171", "\164\162\165\145",
			"\146\141\154\163\145", "\156\165\154\154", null, null, null, null,
			null, null, null, null, null, null, null, "\50", "\51", "\173",
			"\175", "\133", "\135", "\73", "\54", "\56", "\75", "\76", "\74",
			"\41", "\176", "\77", "\72", "\75\75", "\74\75", "\76\75",
			"\41\75", "\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55",
			"\52", "\57", "\46", "\174", "\136", "\45", "\74\74", "\76\76",
			"\76\76\76", "\53\75", "\55\75", "\52\75", "\57\75", "\46\75",
			"\174\75", "\136\75", "\45\75", "\74\74\75", "\76\76\75",
			"\76\76\76\75", };

	/** The Constant lexStateNames. */
	public static final String[] lexStateNames = { "DEFAULT",
			"IN_SINGLE_LINE_COMMENT", "IN_MULTI_LINE_COMMENT", };

	/** The Constant jjnewLexState. */
	public static final int[] jjnewLexState = { -1, -1, -1, -1, -1, -1, 1, 2,
			0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, };

	/** The Constant jjtoToken. */
	static final long[] jjtoToken = { 0xfe6bfffffffff801L, 0x7fffffffffL, };

	/** The Constant jjtoSkip. */
	static final long[] jjtoSkip = { 0x33eL, 0x0L, };

	/** The Constant jjtoSpecial. */
	static final long[] jjtoSpecial = { 0x320L, 0x0L, };

	/** The Constant jjtoMore. */
	static final long[] jjtoMore = { 0x4c0L, 0x0L, };

	/** The input_stream. */
	protected SimpleCharStream input_stream;

	/** The jjrounds. */
	private final int[] jjrounds = new int[86];

	/** The jjstate set. */
	private final int[] jjstateSet = new int[172];

	/** The image. */
	StringBuffer image;

	/** The jjimage len. */
	int jjimageLen;

	/** The length of match. */
	int lengthOfMatch;

	/** The cur char. */
	protected char curChar;

	/**
	 * Instantiates a new ecma script token manager.
	 * 
	 * @param stream
	 *            the stream
	 */
	public EcmaScriptTokenManager(SimpleCharStream stream) {
		if (SimpleCharStream.staticFlag)
			throw new Error(
					"ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
		input_stream = stream;
	}

	/**
	 * Instantiates a new ecma script token manager.
	 * 
	 * @param stream
	 *            the stream
	 * @param lexState
	 *            the lex state
	 */
	public EcmaScriptTokenManager(SimpleCharStream stream, int lexState) {
		this(stream);
		SwitchTo(lexState);
	}

	/**
	 * Re init.
	 * 
	 * @param stream
	 *            the stream
	 */
	public void ReInit(SimpleCharStream stream) {
		jjmatchedPos = jjnewStateCnt = 0;
		curLexState = defaultLexState;
		input_stream = stream;
		ReInitRounds();
	}

	/**
	 * Re init rounds.
	 */
	private final void ReInitRounds() {
		int i;
		jjround = 0x80000001;
		for (i = 86; i-- > 0;)
			jjrounds[i] = 0x80000000;
	}

	/**
	 * Re init.
	 * 
	 * @param stream
	 *            the stream
	 * @param lexState
	 *            the lex state
	 */
	public void ReInit(SimpleCharStream stream, int lexState) {
		ReInit(stream);
		SwitchTo(lexState);
	}

	/**
	 * Switch to.
	 * 
	 * @param lexState
	 *            the lex state
	 */
	public void SwitchTo(int lexState) {
		if (lexState >= 3 || lexState < 0)
			throw new TokenMgrError("Error: Ignoring invalid lexical state : "
					+ lexState + ". State unchanged.",
					TokenMgrError.INVALID_LEXICAL_STATE);
		else
			curLexState = lexState;
	}

	/**
	 * Jj fill token.
	 * 
	 * @return the token
	 */
	protected Token jjFillToken() {
		Token t = Token.newToken(jjmatchedKind);
		t.kind = jjmatchedKind;
		String im = jjstrLiteralImages[jjmatchedKind];
		t.image = (im == null) ? input_stream.GetImage() : im;
		t.beginLine = input_stream.getBeginLine();
		t.beginColumn = input_stream.getBeginColumn();
		t.endLine = input_stream.getEndLine();
		t.endColumn = input_stream.getEndColumn();
		return t;
	}

	/** The cur lex state. */
	int curLexState = 0;

	/** The default lex state. */
	int defaultLexState = 0;

	/** The jjnew state cnt. */
	int jjnewStateCnt;

	/** The jjround. */
	int jjround;

	/** The jjmatched pos. */
	int jjmatchedPos;

	/** The jjmatched kind. */
	int jjmatchedKind;

	/**
	 * Gets the next token.
	 * 
	 * @return the next token
	 */
	public Token getNextToken() {
		int kind;
		Token specialToken = null;
		Token matchedToken;
		int curPos = 0;

		EOFLoop: for (;;) {
			try {
				curChar = input_stream.BeginToken();
			} catch (java.io.IOException e) {
				jjmatchedKind = 0;
				matchedToken = jjFillToken();
				matchedToken.specialToken = specialToken;
				return matchedToken;
			}
			image = null;
			jjimageLen = 0;

			for (;;) {
				switch (curLexState) {
				case 0:
					try {
						input_stream.backup(0);
						while (curChar <= 32
								&& (0x100001200L & (1L << curChar)) != 0L)
							curChar = input_stream.BeginToken();
					} catch (java.io.IOException e1) {
						continue EOFLoop;
					}
					jjmatchedKind = 0x7fffffff;
					jjmatchedPos = 0;
					curPos = jjMoveStringLiteralDfa0_0();
					break;
				case 1:
					jjmatchedKind = 0x7fffffff;
					jjmatchedPos = 0;
					curPos = jjMoveStringLiteralDfa0_1();
					if (jjmatchedPos == 0 && jjmatchedKind > 10) {
						jjmatchedKind = 10;
					}
					break;
				case 2:
					jjmatchedKind = 0x7fffffff;
					jjmatchedPos = 0;
					curPos = jjMoveStringLiteralDfa0_2();
					if (jjmatchedPos == 0 && jjmatchedKind > 10) {
						jjmatchedKind = 10;
					}
					break;
				}
				if (jjmatchedKind != 0x7fffffff) {
					if (jjmatchedPos + 1 < curPos)
						input_stream.backup(curPos - jjmatchedPos - 1);
					if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
						matchedToken = jjFillToken();
						matchedToken.specialToken = specialToken;
						if (jjnewLexState[jjmatchedKind] != -1)
							curLexState = jjnewLexState[jjmatchedKind];
						return matchedToken;
					} else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
						if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
							matchedToken = jjFillToken();
							if (specialToken == null)
								specialToken = matchedToken;
							else {
								matchedToken.specialToken = specialToken;
								specialToken = (specialToken.next = matchedToken);
							}
							SkipLexicalActions(matchedToken);
						} else
							SkipLexicalActions(null);
						if (jjnewLexState[jjmatchedKind] != -1)
							curLexState = jjnewLexState[jjmatchedKind];
						continue EOFLoop;
					}
					jjimageLen += jjmatchedPos + 1;
					if (jjnewLexState[jjmatchedKind] != -1)
						curLexState = jjnewLexState[jjmatchedKind];
					curPos = 0;
					jjmatchedKind = 0x7fffffff;
					try {
						curChar = input_stream.readChar();
						continue;
					} catch (java.io.IOException e1) {
					}
				}
				int error_line = input_stream.getEndLine();
				int error_column = input_stream.getEndColumn();
				String error_after = null;
				boolean EOFSeen = false;
				try {
					input_stream.readChar();
					input_stream.backup(1);
				} catch (java.io.IOException e1) {
					EOFSeen = true;
					error_after = curPos <= 1 ? "" : input_stream.GetImage();
					if (curChar == '\n' || curChar == '\r') {
						error_line++;
						error_column = 0;
					} else
						error_column++;
				}
				if (!EOFSeen) {
					input_stream.backup(1);
					error_after = curPos <= 1 ? "" : input_stream.GetImage();
				}
				throw new TokenMgrError(EOFSeen, curLexState, error_line,
						error_column, error_after, curChar,
						TokenMgrError.LEXICAL_ERROR);
			}
		}
	}

	/**
	 * Skip lexical actions.
	 * 
	 * @param matchedToken
	 *            the matched token
	 */
	void SkipLexicalActions(Token matchedToken) {
		switch (jjmatchedKind) {
		default:
			break;
		}
	}
}
